(*
 * Copyright (c) 2018-2022 Tarides <contact@tarides.com>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *)

module Schema = Irmin.Schema.KV (Irmin.Contents.String)

module Maker = struct
  module Maker = Irmin_pack_unix.Maker (Irmin_tezos.Conf)
  include Maker.Make (Schema)
end

module Store = Irmin_pack_unix.Checks.Make (Maker)

module Maker_tz = struct
  module Maker = Irmin_pack_unix.Maker (Irmin_tezos.Conf)
  include Maker.Make (Irmin_tezos.Schema)
end

module Store_tz = Irmin_pack_unix.Checks.Make (Maker_tz)

let () =
  try
    let store_type = Sys.getenv "STORE" in
    if store_type = "PACK" then match Store.cli () with _ -> .
    else raise Not_found
  with Not_found -> ( match Store_tz.cli () with _ -> .)
